﻿// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.DataRowIndexBuffer
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 8E14765A-6610-409A-BA36-099A0642905D
// Assembly location: E:\git\ALLIDA\windll\infocard.exe

using System.Collections.Generic;

namespace Microsoft.InfoCards
{
  internal class DataRowIndexBuffer
  {
    private Dictionary<string, List<IndexObject>> m_objects;

    public DataRowIndexBuffer()
    {
      this.m_objects = new Dictionary<string, List<IndexObject>>();
    }

    public string[] GetIndexNames()
    {
      return new List<string>((IEnumerable<string>) this.m_objects.Keys).ToArray();
    }

    public List<IndexObject> this[string name]
    {
      get
      {
        if (!this.m_objects.ContainsKey(name))
          this.m_objects.Add(name, new List<IndexObject>());
        return this.m_objects[name];
      }
    }

    public void Clear()
    {
      this.m_objects.Clear();
    }

    public void ClearIndexValues(string name)
    {
      this.m_objects.Remove(name);
    }

    public void AddIndexValue(string name, IndexObject obj)
    {
      this[name].Add(obj);
    }

    public void AddIndexValues(string name, IndexObject[] objs)
    {
      this[name].AddRange((IEnumerable<IndexObject>) objs);
    }

    public void SetIndexValues(string name, IndexObject[] indexObjects)
    {
      this[name].Clear();
      this[name].AddRange((IEnumerable<IndexObject>) indexObjects);
    }

    public int GetValueCount(string name)
    {
      if (!this.m_objects.ContainsKey(name))
        return 0;
      return this.m_objects[name].Count;
    }
  }
}
